package com.hqj.demo;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * java时间Date的练习
 * @author HQJ
 * 假设你的生日是每一年的08-08号，
 * 从键盘输入一个只有月份和日的(如07-08)时间
 * ，计算这个时间距离你下一次生日还有多少天？
 * 注意：如果这个时间比生日小说明是同一年内的时间差
 * 如果这个时间比生日大，说明是下一年的生日时间差
 */
public class Exercise02 {
    public static void main(String[] args) throws Exception{
        Brithday b = new Brithday();
        String birth = "08-08",input = "09-08";
        b.calcDays(birth,input);
    }
}
class Brithday{

    public void calcDays(String birth,String input) throws Exception{
        String str = birth;//08-08
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
        //创建时间对象
        Date d = new Date();
        String y = sdf.format(d);
        birth = y + "-" + str;//生日的日期年份  2020-08-08
        input = y + "-" + input;//你输入的日期年份

        sdf = new SimpleDateFormat("yyyy-MM-dd");
        //分别获取时间字符串的格林威治时间
        long birth_long = sdf.parse(birth).getTime();
        long input_long = sdf.parse(input).getTime();

        long day_long = birth_long - input_long;
        long days = 0;
        //比较大小
        if(day_long<0){
            birth = (Integer.parseInt(y)+1) + "-" + str;//2021-08-08
            birth_long = sdf.parse(birth).getTime();
            day_long = birth_long - input_long;
        }
        days = (int)(day_long/(24*60*60*1000));

        System.out.println(input+"距离"+birth+"还有"+days+"天。");
    }

}